#ifndef GEOMETRY_OBJECT_H
#define GEOMETRY_OBJECT_H

#include <stddef.h>
#include <assert.h>

class GeometryObject {
    public:
        GeometryObject() = default;
        virtual ~GeometryObject() {
            delete[] m_vertexData;
        };

        inline virtual const float *getVertexData() {
            return m_vertexData;
        };
        inline virtual const unsigned char *getVertexElements() {
            // 不应该运行到这里
            assert(false);
            return nullptr;
        };
        // 每个点的坐标用几个浮点数表示
        virtual size_t getComponentSize() = 0;
        // 每个点的跨步，以字节为单位
        virtual size_t getStride() = 0;
        // 共有多少个点
        virtual size_t getVertexPointSize() = 0;
        // 总共有多少数据量，以字节为单位
        virtual size_t getVertexByteSize() = 0;

    protected:
        float *m_vertexData = nullptr;
};

#endif // GEOMETRY_OBJECT_H
